package cn.tedu.micro.demo.es.po;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;

import java.util.Date;

/**
 * 实际学生应该包含哪些属性,是业务决定的(设计接口)
 * 这里我们为测试准备的功能,让学生具备几个不同基础类型的属性
 * 包括 学生id,学号,姓名,年龄,生日,家庭住址
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "student")//当前索引的所有读写工作 都会对应一个student索引
//框架会在容器启动之后,自动创建这个索引
@Setting(shards=5,replicas=1)
public class StudentEsPO {
    //类似于在持久层 对每个属性定义对应的表格字段 当前这个文档的属性也可以定义对应索引的映射
    @Id//希望这个id作为主键使用 每个文档都有一个唯一的值
    @Field(type= FieldType.Keyword)
    private String id;
    @Field(type= FieldType.Keyword)
    private String studentNo;
    @Field(type= FieldType.Text)
    private String name;
    @Field(type= FieldType.Integer)
    private Integer age;
    @Field(type= FieldType.Date,format= DateFormat.date_hour_minute_second)
    private Date birthday;
    @Field(type= FieldType.Text)
    private String address;
    //地理位置属性 包含经纬度
    @GeoPointField
    private GeoPoint location;
}
